{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# W3_冯炳驹_124298228"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第四部：调整树的参数：subsample 和 colsample_bytree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#导入库\n",
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nrR4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21d42e6b128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('interest_level');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# drop ids and get labels\n",
    "y_train = train['interest_level']\n",
    "\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 9\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    print(\"best n_estimators: %i\" %(n_estimators))\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=StratifiedKFold(n_splits=5, random_state=3, shuffle=True),\n",
       "       error_score='raise',\n",
       "       estimator=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
       "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
       "       max_depth=6, min_child_weight=0.5, missing=None, n_estimators=192,\n",
       "       n_jobs=1, nthread=4, objective='multi:softprob', random_state=0,\n",
       "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
       "       subsample=0.3),\n",
       "       fit_params={}, iid=True, n_jobs=4,\n",
       "       param_grid={'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8], 'colsample_bytree': [0.6, 0.7, 0.8, 0.9]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=192,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=0.5,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        nthread=4,\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=4, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda2\\envs\\python3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:667: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58713, std: 0.00236, params: {'subsample': 0.3, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58446, std: 0.00186, params: {'subsample': 0.4, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58279, std: 0.00235, params: {'subsample': 0.5, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58129, std: 0.00249, params: {'subsample': 0.6, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58076, std: 0.00164, params: {'subsample': 0.7, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58056, std: 0.00261, params: {'subsample': 0.8, 'colsample_bytree': 0.6},\n",
       "  mean: -0.58703, std: 0.00243, params: {'subsample': 0.3, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58485, std: 0.00260, params: {'subsample': 0.4, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58390, std: 0.00124, params: {'subsample': 0.5, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58217, std: 0.00186, params: {'subsample': 0.6, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58151, std: 0.00157, params: {'subsample': 0.7, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58038, std: 0.00186, params: {'subsample': 0.8, 'colsample_bytree': 0.7},\n",
       "  mean: -0.58576, std: 0.00302, params: {'subsample': 0.3, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58401, std: 0.00248, params: {'subsample': 0.4, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58211, std: 0.00202, params: {'subsample': 0.5, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58198, std: 0.00301, params: {'subsample': 0.6, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58027, std: 0.00255, params: {'subsample': 0.7, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58012, std: 0.00176, params: {'subsample': 0.8, 'colsample_bytree': 0.8},\n",
       "  mean: -0.58619, std: 0.00345, params: {'subsample': 0.3, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58341, std: 0.00295, params: {'subsample': 0.4, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58287, std: 0.00139, params: {'subsample': 0.5, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58177, std: 0.00227, params: {'subsample': 0.6, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58092, std: 0.00263, params: {'subsample': 0.7, 'colsample_bytree': 0.9},\n",
       "  mean: -0.58019, std: 0.00228, params: {'subsample': 0.8, 'colsample_bytree': 0.9}],\n",
       " {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       " -0.58011625982583959)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_, gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([  111.78940892,   125.28705478,   129.50206103,   124.25644503,\n",
       "          127.90902781,   126.58315125,   116.72943077,   131.65826764,\n",
       "          142.64141846,   138.56757293,   140.29179444,   141.55534868,\n",
       "          129.00185828,   142.07388501,   160.6706821 ,   161.31124506,\n",
       "         4016.58085613,  9588.26041594,   147.39102712,   160.18086181,\n",
       "          171.65094786,   174.92987065,   172.74519539,   148.64293561]),\n",
       " 'mean_score_time': array([  7.25529718e-01,   6.95248032e-01,   6.90435696e-01,\n",
       "          7.01116323e-01,   6.53307533e-01,   6.70767975e-01,\n",
       "          7.32826567e-01,   7.05487871e-01,   6.54643440e-01,\n",
       "          6.93139362e-01,   6.94728851e-01,   6.99926567e-01,\n",
       "          6.94377375e-01,   7.25409460e-01,   7.18332815e-01,\n",
       "          6.90456820e-01,   2.16056806e+03,   6.74061298e-01,\n",
       "          6.91183662e-01,   7.30748224e-01,   7.00694132e-01,\n",
       "          6.93268871e-01,   7.30903482e-01,   6.72925615e-01]),\n",
       " 'mean_test_score': array([-0.58712905, -0.58445558, -0.58279335, -0.58129007, -0.58076342,\n",
       "        -0.58056329, -0.58702994, -0.5848476 , -0.58389539, -0.58217143,\n",
       "        -0.58151174, -0.58037547, -0.58576287, -0.58400737, -0.58211137,\n",
       "        -0.58197856, -0.58026638, -0.58011626, -0.58619397, -0.58341488,\n",
       "        -0.58286534, -0.58176854, -0.58092359, -0.58018582]),\n",
       " 'mean_train_score': array([-0.48301594, -0.47858957, -0.4755241 , -0.4734423 , -0.47290563,\n",
       "        -0.47327728, -0.47936137, -0.47484901, -0.47212218, -0.47020884,\n",
       "        -0.46945446, -0.47029538, -0.4760185 , -0.47092916, -0.4679285 ,\n",
       "        -0.4672752 , -0.46733562, -0.46879561, -0.4740668 , -0.46858059,\n",
       "        -0.46577518, -0.46482485, -0.46478762, -0.46644544]),\n",
       " 'param_colsample_bytree': masked_array(data = [0.6 0.6 0.6 0.6 0.6 0.6 0.7 0.7 0.7 0.7 0.7 0.7 0.8 0.8 0.8 0.8 0.8 0.8\n",
       "  0.9 0.9 0.9 0.9 0.9 0.9],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_subsample': masked_array(data = [0.3 0.4 0.5 0.6 0.7 0.8 0.3 0.4 0.5 0.6 0.7 0.8 0.3 0.4 0.5 0.6 0.7 0.8\n",
       "  0.3 0.4 0.5 0.6 0.7 0.8],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': ({'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8}),\n",
       " 'rank_test_score': array([24, 19, 14,  8,  6,  5, 23, 20, 17, 13,  9,  4, 21, 18, 12, 11,  3,\n",
       "         1, 22, 16, 15, 10,  7,  2]),\n",
       " 'split0_test_score': array([-0.58365533, -0.58154366, -0.57921001, -0.57678192, -0.57827231,\n",
       "        -0.57572006, -0.58361907, -0.58029724, -0.58158146, -0.57894907,\n",
       "        -0.57918466, -0.57700098, -0.5809967 , -0.58100425, -0.57818834,\n",
       "        -0.57664814, -0.57631646, -0.57705905, -0.58079314, -0.57781571,\n",
       "        -0.58057233, -0.57891346, -0.57614726, -0.57574152]),\n",
       " 'split0_train_score': array([-0.483384  , -0.47903851, -0.47716127, -0.47270882, -0.47451195,\n",
       "        -0.47403672, -0.48137808, -0.47521116, -0.47321386, -0.4704634 ,\n",
       "        -0.46980232, -0.47163825, -0.47724708, -0.47073318, -0.46787989,\n",
       "        -0.46726885, -0.46677867, -0.46896651, -0.47491077, -0.47012545,\n",
       "        -0.4660392 , -0.46723847, -0.46507987, -0.46634232]),\n",
       " 'split1_test_score': array([-0.58673989, -0.58589767, -0.58392282, -0.58188286, -0.58194357,\n",
       "        -0.58225679, -0.59060022, -0.5864341 , -0.58434012, -0.58343937,\n",
       "        -0.58246689, -0.58115517, -0.588408  , -0.58480406, -0.58286264,\n",
       "        -0.58121738, -0.58105232, -0.57952469, -0.58709516, -0.58612187,\n",
       "        -0.5826078 , -0.58217033, -0.58361005, -0.58093881]),\n",
       " 'split1_train_score': array([-0.48234567, -0.47948227, -0.47369992, -0.47329401, -0.47159174,\n",
       "        -0.47150225, -0.48010081, -0.47500548, -0.47185425, -0.46867047,\n",
       "        -0.46739373, -0.46909451, -0.47492604, -0.47157931, -0.46571684,\n",
       "        -0.46563786, -0.4671763 , -0.46728223, -0.47377441, -0.46864688,\n",
       "        -0.46574304, -0.46245525, -0.46321915, -0.46681368]),\n",
       " 'split2_test_score': array([-0.58586218, -0.58297131, -0.58085452, -0.58206436, -0.58012176,\n",
       "        -0.58049684, -0.58604028, -0.58410512, -0.58486064, -0.58150232,\n",
       "        -0.58095741, -0.58014481, -0.58466756, -0.58150015, -0.58248029,\n",
       "        -0.58241648, -0.58026127, -0.58071073, -0.58606589, -0.58350683,\n",
       "        -0.58289111, -0.58116573, -0.5815682 , -0.58090084]),\n",
       " 'split2_train_score': array([-0.48316008, -0.4803617 , -0.47657454, -0.47412601, -0.47361175,\n",
       "        -0.47439197, -0.47810851, -0.47545713, -0.47290967, -0.4712986 ,\n",
       "        -0.47051343, -0.47172437, -0.47639067, -0.4701244 , -0.46927551,\n",
       "        -0.46803952, -0.46799382, -0.47126321, -0.47308961, -0.46841458,\n",
       "        -0.46695464, -0.46537838, -0.46811287, -0.46785004]),\n",
       " 'split3_test_score': array([-0.59038972, -0.58619692, -0.58527177, -0.58439248, -0.58306687,\n",
       "        -0.58327372, -0.58880782, -0.58795256, -0.58496703, -0.58429896,\n",
       "        -0.58384762, -0.58257383, -0.5895496 , -0.587739  , -0.58390989,\n",
       "        -0.58518011, -0.58423439, -0.58228402, -0.59156052, -0.58549285,\n",
       "        -0.58487242, -0.5857773 , -0.58289924, -0.58226439]),\n",
       " 'split3_train_score': array([-0.48080428, -0.47460004, -0.47363709, -0.47318308, -0.47181213,\n",
       "        -0.47166747, -0.47798812, -0.47426681, -0.47027614, -0.47066827,\n",
       "        -0.46973807, -0.4680538 , -0.47468759, -0.46992902, -0.46701927,\n",
       "        -0.46682488, -0.46665814, -0.46782747, -0.47383056, -0.46707316,\n",
       "        -0.46309194, -0.46410904, -0.46211243, -0.46418656]),\n",
       " 'split4_test_score': array([-0.58899871, -0.58566872, -0.58470822, -0.58132875, -0.58041248,\n",
       "        -0.58106917, -0.58608201, -0.58544918, -0.58372763, -0.58266756,\n",
       "        -0.58110199, -0.58100274, -0.58519234, -0.58498971, -0.58311603,\n",
       "        -0.58443144, -0.57946723, -0.58100308, -0.58545492, -0.58413733,\n",
       "        -0.58338319, -0.58081557, -0.58039304, -0.58108383]),\n",
       " 'split4_train_score': array([-0.48538568, -0.47946535, -0.47654767, -0.4738996 , -0.47300056,\n",
       "        -0.47478798, -0.47923132, -0.47430449, -0.47235699, -0.46994348,\n",
       "        -0.46982478, -0.47096596, -0.47684109, -0.47227988, -0.46975101,\n",
       "        -0.46860488, -0.46807117, -0.46863861, -0.47472865, -0.4686429 ,\n",
       "        -0.46704705, -0.46494312, -0.46541377, -0.46703461]),\n",
       " 'std_fit_time': array([  4.26509723e+00,   2.67122833e+00,   1.98514713e+00,\n",
       "          2.83833227e+00,   1.38558805e+00,   1.56400657e+00,\n",
       "          2.42057332e+00,   4.77805179e+00,   8.47222776e-01,\n",
       "          4.13855791e+00,   5.47037164e+00,   1.95949878e+00,\n",
       "          7.29273385e-01,   9.54595278e+00,   1.70217312e+01,\n",
       "          6.51912130e+00,   7.72896296e+03,   8.65507710e+03,\n",
       "          2.60470284e+00,   2.31570014e+00,   1.33781145e+00,\n",
       "          1.45773663e+00,   1.79733156e+00,   1.49780528e+01]),\n",
       " 'std_score_time': array([  2.04461722e-02,   1.61997574e-02,   2.28431876e-02,\n",
       "          2.76572770e-02,   2.34970473e-02,   2.14566688e-02,\n",
       "          9.48230096e-02,   4.29793782e-02,   8.56503211e-03,\n",
       "          2.70046377e-02,   4.35845703e-02,   1.66796672e-02,\n",
       "          1.99306264e-02,   3.36191375e-02,   4.60126659e-02,\n",
       "          2.31350159e-02,   4.31968913e+03,   2.21875563e-02,\n",
       "          3.07888961e-02,   4.94951779e-02,   1.47505036e-02,\n",
       "          2.12430972e-02,   5.56888742e-02,   7.59427667e-02]),\n",
       " 'std_test_score': array([ 0.00236438,  0.00185831,  0.00235308,  0.00248607,  0.00163951,\n",
       "         0.00260513,  0.00242575,  0.00259918,  0.0012378 ,  0.0018554 ,\n",
       "         0.00156587,  0.00185879,  0.00301928,  0.00248319,  0.00201671,\n",
       "         0.00301503,  0.00255363,  0.00176274,  0.0034452 ,  0.00295057,\n",
       "         0.00138722,  0.00226521,  0.00263183,  0.00227852]),\n",
       " 'std_train_score': array([ 0.00149081,  0.0020407 ,  0.00153101,  0.00051064,  0.00109635,\n",
       "         0.00140312,  0.00127171,  0.00048185,  0.00103409,  0.00088323,\n",
       "         0.00106833,  0.00146709,  0.00102853,  0.00088696,  0.00147353,\n",
       "         0.00102332,  0.00059478,  0.00136898,  0.00067031,  0.000969  ,\n",
       "         0.00143383,  0.00156674,  0.00205677,  0.00123035])}"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch3_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.580116 using {'subsample': 0.8, 'colsample_bytree': 0.8}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n0AQEknLrTZi9jhUJlZfXSZ/poUBTg4nD+bUcyq+l0eAOW9Dq1KRlRpCaEUlCauiAuhQLERkChISE\nYLc7MJlMbNr0JWvXfugZblpCWFgYDQ313HnnrajVaq6++nq0Wi1ZWWN56aXniImJa+8FdOSSSy7j\nr3/9C8uWLcHpdLJ8+f2kpo7mb39bwdKlt2G1Wrn11sWEhIS2X5OZOZbHHluBr68vKpWKxx57lLy8\nAv75z8f5+uuN+Pv7o9FosNls3WpXQ0M9y5cvpa2tjfvv/z0azdEH++67l/PEE49hs9mwWi0sX/5f\nXZZVVVXB7353J3a7jQce+AMAERGR6PV6xozJRqt1P8pjx+awYsUjPPjg/xxz/f33/zcrVvwRp9OJ\nSqXi//2/h4mPT2DXrp+5667bMZtNnH32ufj7+/PJJ//GbDZxySWXsWzZvdx3329xuVwsWHAxERGR\ntLQ089hjK3j00b9z44238NhjK7jjjlvQarU89JBYZT7UsBvqqHz+WaxlpfikpBBz5zIipcRhFSfS\n0mTm8IE6CvJrMdS4h1Q1GhXJo8NJy4okMTUMndeJhaOyrRqtv4v+MClRKd0d9zsNONVNqUZagNKp\ntPezz9ZRUlLM0qW/7eNaHcuDD97D7353P6NGxfdJeSPtPYbTu83G/fuoWvkiLqORoLPPIeKa61Hr\ndMOizcZWa7tw1FS6zTnUahWjkkNIy4wkeXQ4Xt5d9wPKWytZV/gF++rzmRh3BrdI1/WqLl1tSiV6\nIsOcf/zjMYqLC391/oknnsHb22cQatR7/vCHB2hpaT7mnL+/P4899uSv8lqtFpYuvZ0JEyb1mYAI\nTh8URaHx888wfPgBKo2GyBtvJvjsWYNdrZNiMtoolN3CUVXm/l9QqWBUUgipmRGkpEfg43vyyfha\nk4H1RRv5uWYPCgppwclcPXahO/qujxE9kR4wHL699CUjrb0g2nw64LKYqX59FW0/70QbEkLM0mX4\npqQek2cotdlitlN00EBBfi0VJY3ti8JiRgWRlhVJihSB3s+rW2U1WZv5rOgrtlX9hEtxER8Qx8Up\nF5IZmk5kZOCp2J6InohAIDj9sVVXU/nCM9gqK/FNl4i54y60QZ19Xgcfm9VB8SG3cJQVNeJyuZUj\nMjaAtIxIUjMi8A/s/khCm93IxpJNfF/+A3aXgyh9BBelXMD4iOx+XywgREQgEJwWtO3eRfWqlbjM\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x21d43ae2a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
